package com.tabnet.servlet.client;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.tabnet.beans.personnes.Client;
import com.tabnet.dao.DAOClient;
import com.tabnet.dao.DAOException;
import com.tabnet.dao.DAOFactory;
import com.tabnet.form.client.ModificationClientForm;

public class ModificationClient extends HttpServlet {

	private static final long serialVersionUID = 1L;
	
    public static final String ATT_CLIENT  			= "client";
    public static final String ATT_FORM        		= "form";
    public static final String SESSION_USER 		= "sessionClient";

    public static final String VUE_SUCCES      		= "/adminClient/accueil.jsp";
    public static final String VUE_FORM        		= "/adminClient/modifierClient.jsp";
    
    private DAOClient _ClientDao;
    
    public void init() throws ServletException {
        /* Récupération d'une instance de notre DAO Utilisateur */
    	try {
			this._ClientDao = DAOFactory.getInstance().getClientDAO();
		}
    	catch (DAOException e) {
			e.printStackTrace();
		}
    }
    
    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        /* À la réception d'une requête GET, simple affichage du formulaire */
    	HttpSession session = request.getSession();
    	request.setAttribute( ATT_CLIENT, (Client) session.getAttribute(SESSION_USER));
        this.getServletContext().getRequestDispatcher( VUE_FORM ).forward( request, response );
    }

    public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
    	    	
    	/* Préparation de l'objet formulaire */
    	ModificationClientForm form = new ModificationClientForm(this._ClientDao);

        /* Récupération du client dans la session */
        HttpSession session = request.getSession();

        /* Traitement de la requête et récupération du bean en résultant */
        Client client = form.modifClient(request, (Client) session.getAttribute(SESSION_USER));
        
        /* Ajout du bean et de l'objet métier à l'objet requête */
        request.setAttribute( ATT_FORM, form );
        request.setAttribute( ATT_CLIENT, client );

        /* Si aucune erreur */
        if ( form.getErreurs().isEmpty() ) {
        	
            session.setAttribute( SESSION_USER, client );

            /* Affichage de la fiche récapitulative */
            response.sendRedirect( request.getContextPath() + VUE_SUCCES );
        }
        else {
            /* Sinon, ré-affichage du formulaire de création avec les erreurs */
            this.getServletContext().getRequestDispatcher( VUE_FORM ).forward( request, response );
        }
    }
}
